#include <iostream>//牛客网DP41——01背包
#include <vector>
using namespace std;

int main() {
    int n=0,V=0;
    cin>>n>>V;
    vector<int> obj_v(n);
    vector<int> obj_w(n);
    for(int i=0;i<n;i++){
        cin>>obj_v[i]>>obj_w[i];
    }
    vector<vector<int>> dp1(n+1,vector<int>(V+1));

    for(int i=1;i<n+1;i++){
        for(int j=1;j<V+1;j++){
            dp1[i][j]=max(dp1[i-1][j],j-obj_v[i-1]>=0?dp1[i-1][j-obj_v[i-1]]+obj_w[i-1]:0);
        }
    }
    cout<<dp1[n][V]<<endl;

    vector<vector<int>> dp2(n+1,vector<int>(V+1,0));
    for(int j=1;j<V+1;j++){
        dp2[0][j]=-1;
    }
    for(int i=1;i<n+1;i++){
        for(int j=1;j<V+1;j++){
            dp2[i][j]=dp2[i-1][j];
            if(j-obj_v[i-1]>=0&&dp2[i-1][j-obj_v[i-1]]!=-1) dp2[i][j]=max(dp2[i][j],dp2[i-1][j-obj_v[i-1]]+obj_w[i-1]);
        } 
    }
    cout<<(dp2[n][V]==-1?0:dp2[n][V])<<endl;
    return 0;
}